Operators are special symbols that perform operations on variables and values. For example,
puts 5 + 6 # Output: 11 Here, + is an operator that adds two numbers: 5 and 6.
Types of Ruby Operators
Here's a list of different types of Ruby operators that we will learn in this tutorial:
- Arithmetic Operators
- Assignment Operators
- Comparison Operators
- Logical Operators
- Bitwise Operators
- Ternary Operator
Arithmetic Operators
Arithmetic operators are used to perform mathematical operations like addition, subtraction, multiplication, etc. For example,
mult = 2 * 5 puts mult # Output: 10 Here, * is an arithmetic operator that multiplies two values 2 and 5.
Some commonly used arithmetic operators are:
| Operator | Operation | Example | Result |
|---|---|---|---|
+ | Addition | 5 + 2 | 7 |
- | Subtraction | 4 - 2 | 2 |
* | Multiplication | 2 * 3 | 6 |
/ | Division | 4 / 2 | 2 |
% | Modulo | 5 % 2 | 1 |
** | Exponentiation | 4 ** 2 | 16 |
Example 1: Arithmetic Operators
Let's explore an example to see how various arithmetic operators work.
a = 7 b = 2 # Addition puts a + b # Output: 9 # Subtraction puts a - b # Output: 5 # Multiplication puts a * b # Output: 14 # Division # Ruby performs integer division when both values are integers. # So,it returns only the whole number part. puts a / b # Output: 3 # Modulo puts a % b # Output: 1 # Exponentiation puts a ** b # Output: 49 Assignment Operators
The assignment operator = is used to assign values to a variable. For example,
# Assigns 5 to num num = 5 puts num Output
5
Here, we've used the = operator to assign the value 5 to the variable num.
Some commonly used assignment operators in Ruby are:
| Operator | Name | Example |
|---|---|---|
= | Assignment Operator | a = 7(Value of a is 7) |
+= | Addition Assignment | a += 5(Same as a = a + 5) |
-= | Subtraction Assignment | a -= 2(Same as a = a - 2) |
*= | Multiplication Assignment | a *= 3(Same as a = a * 3) |
/= | Division Assignment | a /= 2 (Same as a = a / 2) |
%= | Remainder Assignment | a %= 4(Same as a = a % 4) |
**= | Exponentiation Assignment | a **= 2(Same as a = a ** 2) |
Example 2: Assignment Operators
# Using Assignment Operator num = 7 # Using Addition Assignment num += 5 puts "After += 5: #{num}" # Using Subtraction Assignment num -= 2 puts "After -= 2: #{num}" # Using Multiplication Assignment num *= 3 puts "After *= 3: #{num}" # Using Division Assignment num /= 2 puts "After /= 2: #{num}" # Using Remainder Assignment num %= 4 puts "After %= 4: #{num}" # Using Exponentiation Assignment num **= 2 puts "After **= 2: #{num}" Output
After += 5: 12 After -= 2: 10 After *= 3: 30 After /= 2: 15 After %= 4: 3 After **= 2: 9
Here, after each assignment, the value of num changes, and the new value is used in the next step.
Comparison Operators
The comparison operators compare two values and return a boolean value (true or false) based on the comparison result. For example,
a = 2 b = 5 # Checks if 'a' is less than 'b' puts a < b # Output: true Here, we've used the less than (<) comparison operator to compare the values of a and b. Since 2 is less than 5, the expression a < b evaluates to true.
Some commonly used comparison operators are:
| Operator | Name | Example | Result |
|---|---|---|---|
== | Equal to | 3 == 5 | false |
!= | Not equal to | 3 != 4 | true |
> | Greater than | 4 > 4 | false |
< | Less than | 3 < 3 | false |
>= | Greater than or equal to | 4 >= 4 | true |
<= | Less than or equal to | 3 <= 3 | true |
<=> | Combined comparison (returns -1, 0, or 1) | 5 <=> 10 | -1 |
Example 3: Comparison Operators
a = 5 b = 2 # Equal to operator puts "#{a} == #{b} is #{a == b}" # Not equal to operator puts "#{a} != #{b} is #{a != b}" # Greater than operator puts "#{a} > #{b} is #{a > b}" # Less than operator puts "#{a} < #{b} is #{a < b}" # Greater than or equal to operator puts "#{a} >= #{b} is #{a >= b}" # Less than or equal to operator puts "#{a} <= #{b} is #{a <= b}" # Combined comparison operator puts "#{a} <=> #{b} is #{a <=> b}" Output
5 == 2 is false 5 != 2 is true 5 > 2 is true 5 < 2 is false 5 >= 2 is true 5 <= 2 is false 5 <=> 2 is 1
Logical Operators
Logical operators are used to check whether an expression is true or false. They are used in decision-making. For example,
a = 3 b = 6 puts (a > 2) && (b >= 6) # Output: true Here, we've used the logical AND operator (&&). Since both a > 2 and b >= 6 are true, the result is true.
The commonly used logical operators are:
| Operator | Syntax | Description |
|---|---|---|
&& (Logical AND) | a && b | Returns true only if both a and b are true. |
|| (Logical OR) | a || b | Returns true if either a or b is true. |
! (Logical NOT) | !a | Returns false if a is true and vice versa. |
Example 4: Logical Operators
# Logical AND has_password = true has_username = true can_login = has_password && has_username puts "Can login: #{can_login}" # Logical OR is_weekday = false is_holiday = true can_relax = is_weekday || is_holiday puts "Can relax: #{can_relax}" # Logical NOT is_busy = false is_free = !is_busy puts "Is free: #{is_free}" Output
Can login: true Can relax: true Is free: true
Here,
| Expression | Result | Reason |
|---|---|---|
has_password && has_username | true | Both has_password and has_username are true. |
is_weekday || is_holiday | true | is_weekday is false, but since is_holiday is true, the OR operator returns true. |
!is_busy | true | is_busy is false, and the NOT operator inverts the false to true. |
Bitwise Operators
Bitwise operators act on operands as if they were strings of binary digits. They operate bit by bit, hence the name.
In the table below:
Let a = 10 (0000 1010 in binary) and b = 4 (0000 0100 in binary)
| Operator | Syntax | Description |
|---|---|---|
& (Bitwise AND) | a & b | 0 (0000 0000)Copies bits set in both a and b |
| (Bitwise OR) | a | b | 14 (0000 1110)Copies bits set in either a or b |
~ (Bitwise NOT) | ~a | -11 (1111 0101)Flips all bits in a |
^ (Bitwise XOR) | a ^ b | 14 (0000 1110)Copies bits set in one but not both of a and b |
>> (Bitwise right shift) | a >> 2 | 2 (0000 0010)Shifts a right by 2 bits |
<< (Bitwise left shift) | a << 2 | 40 (0010 1000)Shifts a left by 2 bits |
Note: Binary values are shown in 8-bit format for clarity. Ruby uses arbitrary-precision integers, so actual storage may differ.
Ternary Operator
The ternary operator in Ruby consists of three parts:
- A condition.
- An expression to execute if the condition is
true. - Another expression to execute if the condition is
false.
The syntax of the ternary operator is:
condition ? Expression1 : Expression2 Let's see a simple example of the ternary operator.
age = 18 can_vote = age >= 18 ? "Yes, you can vote." : "No, you cannot vote." puts can_vote Output
Yes, you can vote.
Here,
- Condition:
age >= 18checks ifageis 18 or greater. - Expression1:
"Yes, you can vote."is returned if the condition istrue. - Expression2:
"No, you cannot vote."is returned if the condition isfalse.
Special Operators
In Ruby, range operators are used to create a sequence of values from a start point to an endpoint. There are two types of range operators:
| Operator | Description | Example |
|---|---|---|
Inclusive Range (..) | Includes the end value. | 1..5 → 1, 2, 3, 4, 5 |
Exclusive Range (...) | Excludes the end value. | 1...5 → 1, 2, 3, 4 |
The dot (.) operator is used to call methods on objects. For example,
greeting = "hello" puts greeting.upcase # Output: HELLO Here, .upcase calls the upcase method on the string "hello".
The double colon (::) operator is used to access constants, classes, or modules defined inside another module or class. For example,
puts Math::PI # Output: 3.141592653589793 The defined? operator checks if a variable, method, or constant exists. It returns a string if it's defined, or nil if not. For example,
x = 10 puts defined? x # Output: local-variable puts defined? puts # Output: method puts defined? y # Output: nil In Ruby, if defined? returns nil, puts prints nothing, because there's nothing to print.