Python Operators:

Python Operators in general are used to perform operations on values and variables. These are standard symbols used for the purpose of logical and arithmetic operations. In this article, we will look into different types of Python operators. 

  • OPERATORS: These are special symbols. Eg- + , * , /, etc.
  • OPERAND: It is the value on which the operator is applied
Python divides the operators into the following groups.
  • Arithmetic Operators.
  • Assignment Operators.
  • Comparison Operators.
  • Logical Operators.
  • Identity Operators.
  • Membership Operators.
  • Bitwise operator.

Arithmetic operators are used for arithmetic operations on numeric values, like addition, subtraction, multiplication, and division(integer or floor) to perform mathematical operations.



Addition:
This is used to add two operands. For example, x and y are two operands, and + is an operator to perform an addition between x and y. Thus
x = 55
y =35
print(x+y)

Subtraction:
x=50
y=20
print(x - y)

Multiplication:
 x =12
y =5
print(x*y)
the * symbol represents multiplication.

Division:
For division, we have two divisions
1) simple division
2) floor division

Integer division:
x =100
y =20.5
print(x/y)

Floor division:
Rounds the result to the nearest whole number.
x = 15
y =2
print(x//y)
the result is 7.

Modulus:
This is the division in which we get the remainder.
x=5
y=2
print(x % y)
the remainder is 1 which is the result of this expression.

PRECEDENCE:
  • P – Parentheses
  • E – Exponentiation
  • M – Multiplication     (Multiplication and division have the same precedence)
  • D – Division
  • A – Addition     (Addition and subtraction have the same precedence)
  • S – Subtraction

The modulus operator helps us extract the last digit/s of a number. For example:

  • x % 10 -> yields the last digit
  • x % 100 -> yield last two digits
# Examples of Arithmetic Operator
x = 9
y = 4

# Addition of numbers
add = x + y

# Subtraction of numbers
sub = x - y

# Multiplication of a number
mul = x * y

# Division(float) of number
div1 = x / y

# Division(floor) of number
div2 = x // y

# Modulo of both numbers
mod = x % y

# Power
p = x ** y
# print results
print(add)
print(sub)
print(mul)
print(div1)
print(div2)
print(mod)
print(p)
Output
  13
   5
36
2.25
2
1
6561

Comparison Operators


Comparison of Relational operators compares the values. It either returns True or False according to the condition.

OperatorDescriptionSyntax
>Greater than: True if the left operand is greater than the rightx > y
<Less than: True if the left operand is less than the rightx < y
==Equal to: True if both operands are equalx == y
!=Not equal to :  True if operands are not equalx != y
>=Greater than or equal to:  True if the left operand is greater than or equal to the rightx >= y
<=Less than or equal to:  True if the left operand is less than or equal to the rightx <= is
is x is the same as yx is y
is notx is not the same as yx is not y

= is an assignment operator and == comparison operator.

Example: Comparison Operators in Python

# Examples of Relational Operators
a = 13
b = 33

# a > b is False
print(a > b)

# a < b is True
print(a < b)

# a == b is False
print(a == b)

# a != b is True
print(a != b)

# a >= b is False

print(a >= b)

# a <= b is True
print(a <= b)

Output
False
True
False
True
False
True
Python Logical Operators:
These operators are used to bind conditional statements:
There are three logical operators
and, or, not.

Python "and" operator


The Python "and" operator is a binary operator, which means it requires two operands. The general syntax looks like this:

      operand1 and operand2

The Condition only returns to true if and only if both are true

x = True

y = True

print(x and y)

x = 5

print(x > 3 and x < 10)

Python "or" Operator:

The python or operator is also a binary operator it

requires two operands. the general syntax is

operand 1 and operand 2

it returns true if any of the operands is true

if x = 1

y = 0

print(x or y) returns to true because it checks either of the

two operands are true and return the result as true.

Logical Operators

Logical operators perform Logical ANDLogical OR, and Logical NOT operations. It is used to combine conditional statements.

Operator    DescriptionSyntax
andLogical AND: True if both the operands are truex and y
orLogical OR: True if either of the operands is true x or y
notLogical NOT: True if the operand is false not x
# Examples of Logical Operator
a = True
b = False
  
# Print a and b is False
print(a and b)
  
# Print a or b is True
print(a or b)
  
# Print not a is False
print(not a)
Output
False
True
False

Bitwise Operators


Bitwise operators act on bits and perform the bit-by-bit operations. These are used to operate on binary numbers.

OperatorDescriptionSyntax
&Bitwise ANDx & y
|Bitwise ORx | y
~Bitwise NOT~x
^Bitwise XORx ^ y
>>Bitwise right shiftx>>
<<Bitwise left shiftx<<

Example: Bitwise Operators in Python

# Examples of Bitwise operators
a = 10
b = 4
  
# Print bitwise AND operation
print(a & b)
  
# Print bitwise OR operation
print(a | b)
  
# Print bitwise NOT operation
print(~a)
  
# print bitwise XOR operation
print(a ^ b)
  
# print bitwise right shift operation
print(a >> 2)
  
# print bitwise left shift operation
print(a << 2)
Output
0
14
-11
14
2
40

Assignment Operators 

Assignment operators are used to assign values to the variables.

OperatorDescriptionSyntax
=Assign value of right side of expression to left side operand x = y + z
+=Add AND: Add right-side operand with left side operand and then assign to left operanda+=b     a=a+b
-=Subtract AND: Subtract right operand from left operand and then assign to left operanda-=b     a=a-b
*=Multiply AND: Multiply right operand with left operand and then assign to left operanda*=b     a=a*b
/=Divide AND: Divide left operand with right operand and then assign to left operanda/=b     a=a/b
%=Modulus AND: Takes modulus using left and right operands and assign the result to left operanda%=b     a=a%b
//=Divide(floor) AND: Divide left operand with right operand and then assign the value(floor) to left operanda//=b     a=a//b
**=Exponent AND: Calculate exponent(raise power) value using operands and assign value to left operanda**=b     a=a**b
&=Performs Bitwise AND on operands and assign value to left operanda&=b     a=a&b
|=Performs Bitwise OR on operands and assign value to left operanda|=b     a=a|b
^=Performs Bitwise xOR on operands and assign value to left operanda^=b     a=a^b
>>=Performs Bitwise right shift on operands and assign value to left operanda>>=b     a=a>>b
<<=Performs Bitwise left shift on operands and assign value to left operanda <<= b     a= a << b

Example: Assignment Operators in Python

# Examples of Assignment Operators
a = 10
  
# Assign value
b = a
print(b)
  
# Add and assign value
b += a
print(b)
  
# Subtract and assign value
b -= a
print(b)
  
# multiply and assign
b *= a
print(b)
  
# bitwise lishift operator
b <<= a
print(b)
Output
10
20
10
100
102400

Identity Operators

is and is not are the identity operators both are used to check if two values are located on the same part of the memory. Two variables that are equal do not imply that they are identical. 

is          True if the operands are identical 
is not      True if the operands are not identical 

Example: Identity Operator

a = 10
b = 20
c = a
  
print(a is not b)
print(a is c)
Output
True
True

Membership Operators

in and not in are the membership operators; used to test whether a value or variable is in a sequence.

in            True if value is found in the sequence
not in        True if value is not found in the sequence

Example: Membership Operator

# Python program to illustrate
# not 'in' operator
x = 24
y = 20
list = [10, 20, 30, 40, 50]
  
if (x not in list):
    print("x is NOT present in given list")
else:
    print("x is present in given list")
  
if (y in list):
    print("y is present in given list")
else:
    print("y is NOT present in given list")
Output
x is NOT present in given list
y is present in given list

Precedence and Associativity of Operators

Precedence and Associativity of Operators: Operator precedence and associativity determine the priorities of the operator.

Operator Precedence

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

Example: Operator Precedence

# Examples of Operator Precedence
  
# Precedence of '+' & '*'
expr = 10 + 20 * 30
print(expr)
  
# Precedence of 'or' & 'and'
name = "Alex"
age = 0
  
if name == "Alex" or name == "John" and age >= 2:
    print("Hello! Welcome.")
else:
    print("Good Bye!!")
Output
610
Hello! Welcome.

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: Operator Associativity

# Examples of Operator Associativity
  
# 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)
Output
100.0
6
0
512

Quiz on Python Operators

Division Operators allow you to divide two numbers and return a quotient, i.e., the first number or number at the left is divided by the second number or number at the right and returns the quotient. 

There are two types of division operators: 

(i) Float division: 

The quotient returns by this operator is always a float number, no matter if two numbers are integer. For example:

>>>5/5
1.0
>>>10/2
5.0
>>>-10/2
-5.0
>>>20.0/2
10.0

(ii) Integer division( Floor division): 

The quotient returned by this operator is dependent on the argument being passed. If any of the numbers is float, it returns output in float. It is also known as Floor division because, if any number is negative, then the output will be floored. For example:

>>>5//5
1
>>>3//2
1
>>>10//3
3

Consider the below statements in Python.

# A Python program to demonstrate the use of 
# "//" for integers
print (5//2)
print (-5//2)

Output:

2
-3

The first output is fine, but the second one may be surprised if we are coming to Java/C++ world. In Python, the “//” operator works as a floor division for integer and float arguments. However, the division operator ‘/’ returns always a float value.

Note: The “//” operator is used to return the closest integer value which is less than or equal to a specified expression or value. So from the above code, 5//2 returns 2. You know that 5/2 is 2.5, and the closest integer which is less than or equal is 2[5//2].( it is inverse to the normal maths, in normal maths the value is 3).

Example

# A Python program to demonstrate use of 
# "/" for floating point numbers
print (5.0/2)
print (-5.0/2)
Output
2.5
-2.5

The real floor division operator is “//”. It returns the floor value for both integer and floating-point arguments.

# A Python program to demonstrate use of 
# "//" for both integers and floating points
print (5//2)
print (-5//2)
print (5.0//2)
print (-5.0//2)
Output
2
-3
2.0
-3.0

See this for example. 


Ternary operators

Ternary operators are also known as conditional expressions are operators that evaluate something based on a condition being true or false. It was added to Python in version 2.5. 
It simply allows testing a condition in a single line replacing the multiline if-else making the code compact.
 

Syntax : 

[on_true] if [expression] else [on_false] 
  • Simple Method to use ternary operator:

# Program to demonstrate conditional operator
a, b = 10, 20
  
# Copy value of a in min if a < b else copy b
min = a if a < b else b
  
print(min)

Output: 

10
  • Direct Method by using tuples, Dictionary, and lambda

# Python program to demonstrate ternary operator
a, b = 10, 20
  
# Use tuple for selecting an item
# (if_test_false,if_test_true)[test]
# if [a<b] is true it return 1, so element with 1 index will print
# else if [a<b] is false it return 0, so element with 0 index will print
print( (b, a) [a < b] )
  
# Use Dictionary for selecting an item
# if [a < b] is true then value of True key will print
# else if [a<b] is false then value of False key will print 
print({True: a, False: b} [a < b])
  
# lambda is more efficient than above two methods
# because in lambda  we are assure that
# only one expression will be evaluated unlike in
# tuple and Dictionary
print((lambda: b, lambda: a)[a < b]())

Output:

10
10
10
  • Ternary operator can be written as nested if-else:

# Python program to demonstrate nested ternary operator
a, b = 10, 20
  
print ("Both a and b are equal" if a == b else "a is greater than b"
        if a > b else "b is greater than a")

The above approach can be written as: 
 

# Python program to demonstrate nested ternary operator
a, b = 10, 20
  
if a != b:
    if a > b:
        print("a is greater than b")
    else:
        print("b is greater than a")
else:
    print("Both a and b are equal")

Output:

 b is greater than a
  • To use the print function in ternary operator be like:- 

Example: Find the Larger number among 2 using the ternary operator in python3

a=5
b=7
  
# [statement_on_True] if [condition] else [statement_on_false] 
  
print(a,"is greater") if (a>b) else print(b,"is Greater")

Output:

7 is Greater

Important Points: 

  • First, the given condition is evaluated (a < b), then either a or b is returned based on the Boolean value returned by the condition
  • The order of the arguments in the operator is different from other languages like C/C++ (See C/C++ ternary operators).
  • Conditional expressions have the lowest priority amongst all Python operations.

Method used prior to 2.5 when the ternary operator was not present 
In an expression like the one given below, the interpreter checks for the expression if this is true then on_true is evaluated, else the on_false is evaluated.
 

Syntax : 

'''When condition becomes true, expression [on_false]
   is not executed and value of "True and [on_true]"
   is returned.  Else value of "False or [on_false]"
   is returned.
   Note that "True and x" is equal to x. 
   And "False or x" is equal to x. '''
[expression] and [on_true] or [on_false] 

Example : 

      
# Program to demonstrate conditional operator
a, b = 10, 20
  
# If a is less than b, then a is assigned
# else b is assigned (Note : it doesn't 
# work if a is 0.
min = a < b and a or b
  
print(min)

Output:

10

Note: The only drawback of this method is that on_true must not be zero or False. If this happens on_false will be evaluated always. The reason for that is if the expression is true, the interpreter will check for the on_true, if that will be zero or false, that will force the interpreter to check for on_false to give the final result of the whole expression.









Comments