Yes, of course. But nevertheless, it means that "not" has precedence over other boolean operators, which contradicts earlier statement that they all are equal.
Not really. The boolean expression is parsed left to right. Iin this case, the parser sees the "and" so it expects:
boolean_expression and boolean_expression
so it examines things closely and finds "a" on the left and "not" on the right. That "not"
cannot be by itself, so it looks a little more and decides that the right expression is "not b". Done.
The key here is that the "not" can't be interpreted alone: it introduces a new boolean expression. The net result is to make it
look as if it had precedence, but it isn't really so.
Ah .. that is, of course, a very simplified explanation, not necessarily what the actual parser really does.