## Comparisons

Unlike C, all comparison operations in Python have the same priority, which is lower than any arithmetic, shift, or bitwise operation. Also, unlike C, expressions like  `a < b < c`  have the conventional mathematical interpretation:

```javascript
comparison    ::=  or_expr (comp_operator or_expr)*
comp_operator ::=  "<" | ">" | "==" | ">=" | "<=" | "!="
                   | "is" ["not"] | ["not"] "in"
```

Comparisons produce boolean values: True or False.

Comparisons can be arbitrarily chained, e.g.,  `x < y <= z`  is equivalent to  `x < y and y <= z` , except that  `y`  is evaluated only once.

Formally, if  `a` ,  `b` ,  `c` , ...,  `y` ,  `z`  are expressions and  `op1` ,  `op2` , ...,  `opN`  are comparison operators, then  `a op1 b op2 c ... y opN z`  is equivalent to  `a op1 b and b op2 c and ... y opN z` , except that each expression is evaluated at most once.

Note that  `a op1 b op2 c`  does not imply any comparison between  `a`  and  `c` , so, for example,  `x < y > z`  is perfectly legal.
