Swift - Combining Logical Operators


While the logical operators work with two operands, it is common to combine them together in a single expression:


var condition1 = false
var condition2 = true
var condition3 = true
if condition1 && condition2  || condition3  {
    print("Do something")


In this example, the first condition is evaluated first:

condition1   (false) && condition2   (true)

It then takes the result of the evaluation (which is false ) and evaluates it with the next operand:

false  || condition3   (true)

The result of this expression is true , and the line "Do something" is printed.

Sometimes, however, you may not want the evaluation of the expressions to go from left to right.

Consider the following example:

var happy = false
var skyIsClear = true
var holiday = true

Suppose you want to go out only if you are happy and the sky is either clear or it is holiday.

In this case you would write the expression as follows:


var happy = false
var skyIsClear = true
var holiday = true
if happy && (skyIsClear || holiday) {
    print("Let's go out!")

Note the parentheses in the expression:

(skyIsClear || holiday)

This expression needs to be evaluated first. In this example, it evaluates to true.

Next, it evaluates with the first operand:

happy   (false) &&  true

The final expression evaluates to false , which means you are not going out today.

The next example doesn't use the parentheses:

happy && skyIsClear || holiday

Therefore, the preceding expression yields a different result:

happy  (false) && skyIsClear (true) =  false
false  || holiday (true) = true

Using parentheses to group related conditions together so that they are evaluated first.

Even if it is redundant sometimes, parentheses make your code more readable.

Related Topic