Skip to content
Related Articles

Related Articles

Precedence and Associativity of Operators in Python
  • Last Updated : 12 Aug, 2020

When dealing with operators in Python we have to know about the concept of Python operator precedence and associativity as these determine the priorities of the operator otherwise, we’ll see unexpected outputs.

Operator Precedence: This is used in an expression with more than one operator with different precedence to determine which operation to perform first.

Example: Solve 

10 + 20 * 30

10 + 20 * 30 is calculated as 10 + (20 * 30)
and not as (10 + 20) * 30

Code:



Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Precedence of '+' & '*'
expr = 10 + 20 * 30
  
print(expr)

chevron_right


Output:

610

Example: Now, let’s see an example on logicalor‘ & logical and‘  operator.  ‘if‘ block is executed even if the age is 0. Because precedence of logical ‘or‘ is greater than the logical ‘and‘.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Precedence of 'or' & 'and'
name = "Alex"
age = 0
  
if name == "Alex" or name == "John" and age >= 2
  print("Hello! Welcome.")
else :
  print("Good Bye!!")

chevron_right


Output:

Hello! Welcome.

Hence, To run the ‘else‘ block we can use parenthesis( ) as their precedence is highest among all the operators.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Precedence of 'or' & 'and'
name = "Alex"
age = 0
  
if ( name == "Alex" or name == "John" ) and age >= 2 :
  print("Hello! Welcome.")
else :
  print("Good Bye!!")

chevron_right


Output:

Good Bye!!

Operator Associativity: If an expression contains two or more operators with the same precedence then Operator Associativity is used to determine. It can either be Left to Right or from Right to Left.

Example: ‘*’ and ‘/’ have the same precedence and their associativity is Left to Right, so the expression “100 / 10 * 10” is treated as “(100 / 10) * 10”.



Code:

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Left-right associativity
# 100 / 10 * 10 is calculated as 
# (100 / 10) * 10 and not 
# as 100 / (10 * 10)
print(100 / 10 * 10)
  
# Left-right associativity
# 5 - 2 + 3 is calculated as 
# (5 - 2) + 3 and not 
# as 5 - (2 + 3)
print(5 - 2 + 3)
  
# left-right associativity
print(5 - (2 + 3))
  
# right-left associativity
# 2 ** 3 ** 2 is calculated as 
# 2 ** (3 ** 2) and not 
# as (2 ** 3) ** 2
print(2 ** 3 ** 2)

chevron_right


Output:

100
6
0
512

Operators Precedence and Associativity are two main characteristics of operators that determine the evaluation order of sub-expressions in absence of brackets.

Example: Solve 

100 + 200 / 10 - 3 * 10

100 + 200 / 10 - 3 * 10 is calculated as 100 + (200 / 10) - (3 * 10)
and not as (100 + 200) / (10 - 3) * 10

Code:

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

expression  = 100 + 200 / 10 - 3 * 10
print(expression )

chevron_right


Output:

90.0

Please see the following precedence and associativity table for reference. This table lists all operators from the highest precedence to the lowest precedence.

Operator Description   Associativity
( ) Parentheses   left-to-right
** Exponent  right-to-left
*  /  % Multiplication/division/modulus left-to-right
+  – Addition/subtraction left-to-right
<<  >> Bitwise shift left, Bitwise shift right left-to-right
<  <= 
>  >=
Relational less than/less than or equal to 
Relational greater than/greater  than or equal to
left-to-right
==  != Relational is equal to/is not equal to left-to-right

is,  is not

in, not in

Identity

Membership operators

left-to-right
& Bitwise AND left-to-right
^ Bitwise exclusive OR left-to-right
| Bitwise inclusive OR left-to-right
not Logical NOT right-to-left
and Logical AND left-to-right
or Logical OR left-to-right

+=  -= 
*=  /= 
%=  &= 
^=  |= 
<<=  >>=
Assignment 
Addition/subtraction assignment 
Multiplication/division assignment 
Modulus/bitwise AND assignment 
Bitwise exclusive/inclusive OR assignment 
Bitwise shift left/right assignment
right-to-left

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course.

My Personal Notes arrow_drop_up
Recommended Articles
Page :