& and, both operands are evaluted
| or, both operands are evaluated
^ Xor, returns true if one and only one is true
! not
&& conditional and, if the left operand is false, returns false without evaluating the right one
|| conditional or, if the left operand is true, returns true without evaluating the right one