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.