If at least one subexpression has a width greater than one, the left and right subexpressions are both evaluated, and the operator is applied as usual. For AND, if the left subexpression evaluates to false, the right subexpression is not evaluated, and the result of the AND operation is set to 0.0. Only if the left subexpression evaluates to true is the right subexpression evaluated. Likewise, for the logical OR operator with scalar width operands, if the left subexpression evaluates to true, the right subexpression is not evaluated, and the result of the OR operation is set to 1.0. Only if the left subexpression evaluates to false is the right subexpression evaluated.
Table indicates the order operators are performed during expression evaluation.
Operators on the top line are performed first, operators on the bottom line are performed last. All operators on a left-associative line are performed in the order they appear in an expression, scanning from left to right. For right-associative lines, operators are performed in the order they appear in an expression, scanning from right to left. The rate of the switch operator is the rate of the fastest of its three operands. As shown in the table in the last section, the precedence of the switch operator is the lowest of all SAOL operators.