4.2 Operators
Table of Contents
Overview
In programming, operators are symbols or keywords that tell the computer to perform an operation on one or more values.
You combine values (also called operands) and operators to form expressions, and those expressions produce new values.
Example:
result = 2 + 3 * 4Here:
2,3,4are operands+and*are operators2 + 3 * 4is an expressionresultwill store the value produced by that expression
In this chapter you will learn the main categories of operators that appear in almost every programming language, and how to use them correctly without unexpected results.
Arithmetic Operators
Arithmetic operators work with numbers to perform basic math.
Common arithmetic operators:
| Operator | Meaning | Example | Result |
|---|---|---|---|
+ | Addition | 5 + 3 | 8 |
- | Subtraction | 5 - 3 | 2 |
* | Multiplication | 5 * 3 | 15 |
/ | Division | 6 / 3 | 2 |
% | Modulo (remainder) | 7 % 3 | 1 |
** | Exponentiation | 2 ** 3 | 8 |
// | Integer division | 7 // 3 | 2 |
Important rule: In most programming languages, including Python, integer division and modulo are used to work with remainders, even-odd checks, and splitting values into chunks.
Addition and Subtraction
x = 10 + 5 # 15
y = x - 3 # 12
z = y + 1 - 2 # 11
You can also use + to concatenate strings:
greeting = "Hello, " + "world!" # "Hello, world!"Many languages do not allow string minus string, because subtraction for strings is not defined.
Multiplication
a = 4 * 3 # 12
b = 2 * 2 * 2 # 8In Python you can also multiply strings by integers:
line = "-" * 10 # "----------"
ha = "ha" * 3 # "hahaha"Division
In Python:
a = 7 / 2 # 3.5 (float division)
b = 7 // 2 # 3 (integer division, floor)
c = 7 % 2 # 1 (remainder)
In some other languages, 7 / 2 with integers might give 3. You always need to know how your language handles division.
Modulo (Remainder)
% gives the remainder after integer division:
7 % 3 # 1
10 % 2 # 0
11 % 2 # 1Typical uses:
- Check if a number is even:
if x % 2 == 0:
print("even")- Turn a large index into a repeating range:
index = n % 5 # result is always 0,1,2,3 or 4Exponentiation
2 ** 3 # 8
3 ** 2 # 9
10 ** 0 # 1
Be careful with very large exponents. 2 ** 1000 is huge.
Comparison Operators
Comparison operators compare two values and return a boolean result:
Trueif the comparison is correctFalseotherwise
Common comparison operators:
| Operator | Meaning | Example | Result |
|---|---|---|---|
== | equal to | 3 == 3 | True |
!= | not equal to | 3 != 4 | True |
< | less than | 2 < 5 | True |
> | greater than | 5 > 2 | True |
<= | less than or equal to | 3 <= 3 | True |
>= | greater than or equal to | 4 >= 5 | False |
age = 18
is_adult = age >= 18 # True
same_age = age == 21 # False
not_ten = age != 10 # TrueComparing strings compares their lexicographic (dictionary-like) order:
"Alice" < "Bob" # True
"cat" < "dog" # True
"10" < "2" # True (they are strings, "1" comes before "2")
For numbers, "10" < "2" would be 10 < 2 which is False. So always know the type you are comparing.
Important rule: Use == for comparison. Do not confuse it with = which is assignment.
Logical Operators
Logical operators combine boolean values.
Common logical operators:
| Operator | Meaning | Example | Result |
|---|---|---|---|
and | both true | True and False | False |
or | at least one true | True or False | True |
not | negation | not True | False |
Examples:
age = 20
has_id = True
can_enter = age >= 18 and has_id
# True and True -> True
is_child = age < 18 or not has_id
# False or False -> False
Logic table for and:
| A | B | A and B |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |
Logic table for or:
| A | B | A or B |
|---|---|---|
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |
not simply flips the value:
not True # False
not False # TrueCommon patterns:
is_logged_in = True
if not is_logged_in:
print("Please log in")
temperature = 22
nice_weather = temperature > 18 and temperature < 30Assignment Operators
Assignment operators store a value in a variable.
The basic one:
x = 5There are also compound assignment operators, which update a variable using its current value.
| Operator | Example | Same as | Meaning |
|---|---|---|---|
= | x = 5 | assign | |
+= | x += 3 | x = x + 3 | add and assign |
-= | x -= 2 | x = x - 2 | subtract and assign |
*= | x *= 4 | x = x * 4 | multiply and assign |
/= | x /= 2 | x = x / 2 | divide and assign |
//= | x //= 2 | x = x // 2 | integer divide and assign |
%= | x %= 3 | x = x % 3 | modulo and assign |
**= | x **= 2 | x = x ** 2 | exponent and assign |
Example:
counter = 0
counter += 1 # 1
counter += 1 # 2
counter *= 2 # 4
counter -= 3 # 1This pattern appears constantly in loops and accumulations.
Important rule: x += 1 updates x in place. It does not create a new variable. It is shorthand for x = x + 1.
Bitwise Operators (Basic Intuition)
Bitwise operators work at the binary bit level of integers. You do not need to master them as a beginner, but you should recognize the symbols.
Common bitwise operators:
| Operator | Name | Example | Meaning (binary) | ||
|---|---|---|---|---|---|
& | AND | a & b | 1 if both bits are 1 | ||
| `\ | ` | OR | `a \ | b` | 1 if at least one bit is 1 |
^ | XOR | a ^ b | 1 if bits are different | ||
~ | NOT | ~a | flips bits | ||
<< | left shift | a << 1 | shift bits left, multiply by 2 | ||
>> | right shift | a >> 1 | shift bits right, divide by 2 (integer) |
Very simple intuition example in Python:
a = 6 # binary 110
b = 3 # binary 011
a & b # 2 (binary 010)
a | b # 7 (binary 111)
a ^ b # 5 (binary 101)
a << 1 # 12 (binary 1100)
a >> 1 # 3 (binary 11)In backend development, bitwise operators appear in low level flags, permissions, and protocol work, but you will not use them as often as arithmetic and logical operators.
Membership and Identity Operators
These are very common when dealing with collections like lists, strings, or sets.
Membership: `in` and `not in`
Membership operators check if a value is part of a collection.
| Operator | Meaning | Example | Result |
|---|---|---|---|
in | element is present | "a" in "cat" | True |
not in | element is not present | 4 not in [1, 2, 3] | True |
Examples:
numbers = [1, 2, 3, 4]
3 in numbers # True
5 in numbers # False
5 not in numbers # True
text = "backend"
"end" in text # True
"front" in text # FalseMembership checks are essential in API code and data validation, such as:
allowed_roles = ["admin", "user", "moderator"]
if role not in allowed_roles:
raise ValueError("Invalid role")Identity: `is` and `is not`
Identity operators check if two variables refer to the same object in memory, not just if they have equal value.
| Operator | Meaning | Example |
|---|---|---|
is | same object | a is b |
is not | not the same object | a is not b |
You usually use is only with special singletons like None in Python.
value = None
if value is None:
print("No value provided")
if value is not None:
print("We have a value:", value)Do not confuse:
a = [1, 2, 3]
b = [1, 2, 3]
a == b # True (same content)
a is b # False (different objects)Operator Precedence
When an expression has many different operators, the language follows precedence rules to decide which part to evaluate first.
Simple math example:
result = 2 + 3 * 4
This is not (2 + 3) * 4 which would be 20. Instead:
- Multiplication first:
3 * 4 = 12 - Then addition:
2 + 12 = 14
So result is 14.
Partial precedence order (high to low) in Python:
| Priority | Operators | Example |
|---|---|---|
| Highest | () parentheses | (2 + 3) * 4 |
** exponent | 2 ** 3 | |
*, /, //, % | 2 * 3, 7 % 2 | |
+, - | 2 + 3 | |
comparison (<, >, ==, etc.) | a < b | |
not | not cond | |
and | A and B | |
| Lowest | or | A or B |
Important rule: When in doubt, use parentheses. They make the intention clear and avoid bugs.
Examples:
x = 10
y = 5
z = 2
a = x + y * z # 10 + 5 * 2 = 20
b = (x + y) * z # (10 + 5) * 2 = 30
cond = x > 5 and y < 10 or z == 0
# This is evaluated as:
# (x > 5 and y < 10) or (z == 0)Use parentheses to make it explicit:
cond = (x > 5 and y < 10) or (z == 0)Combining Operators in Expressions
Real code usually combines several operator types.
Example: Simple discount calculation
price = 120
is_member = True
has_discount = price > 100 and is_member
# True if the price is over 100 and user is a member
if has_discount:
final_price = price * 0.9 # 10% off
else:
final_price = priceOperators used:
>comparisonandlogical*arithmetic=assignment
Example: Validating an age input
age = 25
is_valid_age = age >= 0 and age <= 120
if not is_valid_age:
print("Invalid age")Better with chained comparison in Python:
is_valid_age = 0 <= age <= 120This uses two comparison operators in a single expression.
Example: Checking membership and combining logic
allowed_roles = ["admin", "editor"]
user_role = "viewer"
is_logged_in = True
can_edit = is_logged_in and user_role in allowed_rolesHere we have:
inmembershipandlogical=assignment
Common Beginner Mistakes
Mistake 1: Confusing `=` with `==`
x = 5
if x = 10: # Syntax error in many languages
...Correct:
x = 5
if x == 10:
...=means "assign"==means "compare"
Mistake 2: Ignoring types
"10" + "5" # "105" string concatenation
"10" - "5" # error in many languagesIf you need numeric operations, convert:
int("10") + int("5") # 15Mistake 3: Misunderstanding division
In some languages:
7 / 2 -> 3In Python:
7 / 2 # 3.5
7 // 2 # 3Always know which kind of division you are performing.
Mistake 4: Misplaced parentheses
result = 10 - 3 * 2 # 4
Someone might expect (10 - 3) * 2 which is 14. Add parentheses if that is what you want.
Practice Ideas
To really learn operators, try simple small exercises like:
- Even or odd checker
n = 17
is_even = (n % 2 == 0)- Grade category
score = 78
passed = score >= 50
high_score = score >= 90- Access control
role = "user"
is_active = True
can_delete = is_active and role == "admin"- Cart total
price = 50
quantity = 3
discount = 0.1 # 10%
subtotal = price * quantity
total = subtotal * (1 - discount)As you continue with conditions and loops, you will see operators everywhere. They are the building blocks of all program logic.
Views: 8
KAHIBARO