I am confused as to when I should use Boolean vs bitwise operators
and
vs &
or
vs |
Here's a further difference, which had me puzzled for a while just now: because &
(and other bitwise operators) have a higher precedence than and
(and other boolean operators) the following expressions evaluate to different values:
0 < 1 & 0 < 2
versus
0 < 1 and 0 < 2
To wit, the first yields False
as it is equivalent to 0 < (1 & 0) < 2
, hence 0 < 0 < 2
, hence 0 < 0 and 0 < 2
.