12.6.12    x?y:z

If-then-else. If x evaluates to non-zero, then the result is the value of y. Otherwise the result is the value of z. The x operand must have a numeric value.

All of the binary operators group left-to-right within the same precedence level. For example, the command

expr 4*2 < 7

returns 0.

The &&, ||, and ?: operators have ‘‘lazy evaluation’’, just as in C, which means that operands are not evaluated if they are not needed to determine the outcome. For example, in the command

expr {$v ? [a] : [b]}

only one of [a] or [b] will actually be evaluated, depending on the value of  $v. Note, however, that this is only true if the entire expression is enclosed in braces; otherwise the Tcl parser will evaluate both [a] and [b] before invoking the expr command.