"which evaluates its left child, _and_ when it is true returns the value of its right child"
I like the way you put that. I always stumble for a moment when asked to explain why using "and" and "&&" interchangeably is not a good idea because it can lead to subtle bugs in your program. Maybe a mnemonic would help to remember this more easily.
left && right is true or false, but
left and right is right when true
or something along those lines.