## The Ternary Operator

In programming, it's quite common to write code in the following form

```if (statement evaluating to true or false) {
assign or return a value
} else {
assign or return a different value
}```
For example we might write this inside a function:
``````if x == y {
return 7
} else {
return 42
} ``````

The ternary operator allows us to simplify this into a single line in the following format:

`(statement evaluating to true or false) ? (value for true) : (value for false)`
We could therefore write this inside a function instead of the above example inside a function:
``return x == y ? 7 : 42``

The ternary operator also helps with other problems. If we want to assign a variable to one of two values depending on some evaluation, we either have to assign it to one value, then change it if required, e.g. as follows:

``````var x = 3
if (y == z) {
x = 4
}``````
or use an optional, e.g.:
``````var x : Int!
if (y == z) {
x = 4
} else {
x = 3
}``````
Furthermore if we wanted to assign a `let` constant to one of two values, depending on the result of evaluating an expression, we would have to store the value in a variable first (or give up using a constant)

With the ternary operator, all these issues go away, e.g.

``let x = y == z ? 4 : 3``
For readability, it may help to put the boolean expression in parentheses, e.g.
``let x = (y == z) ? 4 : 3``