Search code examples
pythoncomparison-operators

Comparison operators' priority in Python vs C/C++


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?


Solution

  • 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 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 ... 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.