http://www.perlmonks.org?node_id=1013150


in reply to Operator precedence

These two operators exhibit what is called short-circuit evaluation.   If the left-hand side of && is found to be False, the right-hand side is not evaluated at all, since to do so would be pointless:   “False and anything-at-all is already known to be False.”   Likewise, if the left-hand side of || is found to be True, then the right-hand side is not evaluated since what it’s got is already sufficient:   “True or anything-at-all is already known to be True.”

The computer had to evaluate apple to conclude if it was True or False.   (It was True.)   Since it was True, short-circuiting did not occur so it proceeded to its rightmost part.   But, having evaluated banana in the parenthesized expression (also True), that did short-circuit:   within that subexpression, it did not have to go further.   A call to cherry will never occur in this program fragment as-written.