(4 < 8 ) && (12 <= 40 ) && (50 > 1)

is `true`

An expression with two && operators works like you expect. But let us look at the situation in detail. When the && operator is used twice in an expression, group the first && and its operands together like this:

(4 < 8 ) && (12 <= 40 ) && (50 > 1) is equivalent to: ( (4 < 8 ) && (12 <= 40 )) && (50 > 1)

Now evaluate that first group.
The result is a `true`

or `false`

that works with the next && operator:

( true ) && (50 > 1)

The effect of this is that for the entire expression to
be `true`

, every operand must be `true`

.
One or more `false`

values cause the entire expression
to be `false`

.

Short-circuit evaluation is still going on, so
the **first** `false`

value stops evaluation and
causes the entire expression to be `false`

.