Reputation: 18605
In C/C++, comparison operators such as < >
have higher priority than ==
does. This code will evaluate to true
or 1
:
if(3<4 == 2<3) { //3<4 == 2<3 will evaluate to true
...
}
But in Python, it seems wrong:
3<4 == 2<3 #this will evaluate to False in Python.
In Python, does every comparison operator have the same priority?
Upvotes: 6
Views: 1978
Reputation: 32685
In Python, not only do comparison operators gave the same priority, they are treated specially (they chain rather than group). From the documentation:
Formally, if
a, b, c, ..., y, z
are expressions andop1, op2, ..., opN
are comparison operators, thena op1 b op2 c ... y opN z
is equivalent toa op1 b and b op2 c and ... and y opN z
, except that each expression is evaluated at most once.
In your case, the expression
3<4 == 2<3
is equivalent to
3 < 4 and 4 == 2 and 2 < 3
which is False
due to the second clause.
Upvotes: 6
Reputation: 9172
Short answer: yeah, all the comparisons have the same precedence
Long answer: you may want to have a look on the documentation: Precedence on Python
Upvotes: 3