Skip to content
בעמוד זה

אופרטורים

לאחר שהכרנו את המושג משתנים הפרק נלמד כיצד ניתן לשנות את המידע הקיים בהם. פעולה זו נעשת בין היתר בעזרת אופרטורים.

Operator אופרטור – מפעיל בתרגום ישיר – הוא סמל מסוים המאפשר לבצע פעולות על אופרנד אחד או יותר.

מסובך? במילים פשוטות יותר "אופרטור הוא תו כלשהוא אתו ניתן לבצע השוואה בין נתונים, פעולות חשבוניות ואף לעדכן נתונים"

כבר פגשנו יותר מאופרטור אחד עד עכשיו דוגמת אופרטור ההצבה = או אופרטור החיסור מספר - וכעת נכיר את רובם הנותרים.

התחביר אופרטור מבצע את פעולות על אופרנד אחד או יותר. אופרנד = האיבר עליו מבוצע הפעולה של האופרטור. לדוגמא נסתכל אופרטור ההצבה בקוד הבא

javascript
let a;
a = 5; 

בשורה הראשונה הגדרנו את המשתנה, נתעלם ממנה. בשורה השנייה הגדרנו שלמשתנה a יהיה את הערך 5. פעולה זו התבצעה בעזרת אופרטור ההצבה.

אופרטור ההצבה נקרא אופרטור בינארי (בינארי = דבר בעל שני ערכים אפשריים) כיוון שהוא זקוק לשני אופרנדים כדי להשלים את פעולתו. ככה:

דיאגרמה המציגה את שם המשתנה עם חץ המצביע שהוא האופרנד השמאלי ועל מספר 5 שהוא האופרנד הימני ועל סמל ההצבה שהוא האופרטור

בדוגמה הבאה אנו מציבים במשתנה a ערך המורכב מפעולה של אופרטור נוסף, אופרטור החיבור +.

javascript
let a;
a = 5 + 4;
console.log(a);

בשורה אחרונה יש משהו שאולי לא נפגשנו איתו עד כה וזו הפקודה console.log(a). מטרת פקודה זו היא להדפיס למסך את הערך שהיא מקבלת. במקרה שלנו היא תדפיס את הערך הנוכחי של a שהוא 9. ניתן להריץ הדוגמה, לשנות איתה ולראות את ההדפסה מתעדכנת בהתאם.

גם אופרטור החיבור הוא אופרטור בינארי וגם אופרטור ההצבה הוא בינארי. אם כן, איך ניתן להסביר את השורה הקודמת שראינו הרי נראה שיש כאן מספר גדול יותר של אופרנדים?

הסתכלו על התרשים הבא

דיאגרמה בה רואים את פעולת החיבור בתוך ריבוע אחד וכתוב בצד ימין למטה מתבצע קודם, ואז את הכל בתוך ריבוע שני שהוא מתבצע שני. ומתחת בעצם מראה חץ שקודם כל מתבצע 5+4 והוא נהיה שווה 9 ואז זה פשוט נהפך ל- a=9

מה שקורה בעצם זה שמפרש השפה קודם כל יריץ את הפעולה החשבונית של 5+4 של אופרטור החיבור ורק כאשר תהיה בידו התוצאה, לאחר מכן התוצאה תשלח לאופרטור ההצבה וממילא כל אופרטור מתעסק רק עם שני אופרנדים בו זמנית.

איך נדע איזה אופרטור רץ קודם? לשם כך יצרו את הטבלה קדימות אופרטורים.

קדימות אופרטורים

טבלת קדימות אופרטורים בתכנות דומה ברובה לטבלת קדימות אופרטורים במתמטיקה והיא כדלהלן:

קדימותמזההסיווגדוגמאתוצאה אפשרית
1()קיבוץ(5+9) * 60840
2.גישה לחברObject.member-
2[]גישה לחברObject[‘member’]-
2Newיצירהnew Date()Date Object
2()קריאה לפונקציהFunc()-
3++ --הוספה \ החסרה אחר המשתנהa++, a---
4++ --הוספה \ החסרה לפני המשתנה++a, --a-
4!שלילה לוגית!truefalse
4TypeofטיפוסTypeof aNumber
5**חזקה4**4256
6*הכפלה4*416
6/חילוק16 / 44
6%שארית17 % 41
7+חיבור8+816
7-חיסור16 – 88
9<השוואה פחות מ-10 < 8false
9<=השוואה פחות או שווה ל-10 <= 10true
9>השוואה יותר מ-10 > 52false
9>=השוואה יותר או שווה ל-10 >= 10true
9Instance ofבדיקת טיפוס יורשA instanceof Btrue
10==בדיקת שוויון10 == ‘10’true
10!=בדיקת חוסר שוויון10 != 12true
10===שוויון קפדני10 === ‘10’false
10!===בדיקת חוסר שוויון קפדני10 !== ‘10’true
14&&שני התנאים נכונים5 < 10 && 5 > 2true
15||רק אחד התנאים אמיתי5 < 10 || 5 < 2true
16?:תנאי טרינארי5 > 10 ? true : false;false
17=הצבהA = 5;5

לא כל האופרטורים האפשריים מוצגים ולא את כל האופרטורים נלמד בפרק זה אך תמיד ניתן לחזור לטבלה להיזכר בקדימות של אופרטור כל שהוא.

אגב אופרטורים יכולים להיות גם מילה ולאו דווקא תו, אופרטור היצירה לדוגמא הוא אחד כזה.

כיצד ניתן לכפות סדר שונה לקדימות באופרטורים? אם נשים לב נראה שסימן הסוגריים הוא מאוד גבוה בסדר הקדימות. פרוש העניין שכל סט אופרנדים עם אופרטור שנקיף בתוך סוגריים קודם, כך לדוגמא התוצאה של המשתנה withoutBraces ושל המשתנה withBraces תהיה שונה למרות שנראה שהפעולה החשבונית זהה, עבור המשתנה withBraces כפינו סדר פעולות שונה בעזרת הסוגריים.

javascript
let withoutBraces = 10 + 5 * 60;
let withBraces    = (10 + 5) * 60;

console.log(withoutBraces);
console.log(withBraces);

הפלט שנקבל יהיה

sh
310
900

עבור המשתנה withoutBraces אופרטור הכפל ירוץ קודם וזה בעצם מה שיקרה

javascript
let withoutBraces = 10 + (300)

כיוון שעבור המשתנה withBraces הצבנו את אופרטור החיבור בתוך סוגריים כך שזה בעצם מה שיקרה

javascript
let withBraces = (15) * 60;

אם ככה למה שנכתוב הקוד בצורה כזו מסובכת? פשוט נכתוב 15 * 60 במקום לחבר את 10 ו-5 בתוך סוגריים? בכזה מקרה זאת כנראה תהיה הגישה הנכונה. אך במקרים אחרים בהם פעולות מתמטיות שנבצע יהיו בין משתנים שערכם כלל לא ידוע, בכזה מקרה הסוגריים נעשים מאוד שימושיים.

אופרטורים מתמטיים

אופרטורים מתמטיים הינם אופרטורים בינאריים כאלה הדורשים שני אופרנדים להשלמת פעולת האופרטור. את הערך המוחזר מאופרטור מתמטי ניתן להציב למשתנה או בין הסוגריים של console.log כמו שניראה בדוגמה הבאה. נסו לנחש לפני הפלט מה תהיה התוצאה של כל שורה.

javascript
Console.log(5 + 6);
Console.log(5 - 6);
Console.log(5 * 6);
Console.log(5 / 6);
Console.log(5 % 6);
Console.log(5 ** 6);

אופרטורים של הצבה

אופרטורים אלו מאוד נפוצים. אנו מכירים את הרגיל

javascript
let a;
a = 5 + 4;
console.log(a);

אך אופרטורים אלו יכולים להיות מורכבים יותר. ניקח לדוגמה את קטע הקוד הבא בו אנו רוצים להוסיף למשתנה a 5 לערכו הנוכחי. נבצע זאת בשיטה הבאה

javascript
let a = 5;
a     = a + 5;
console.log(a);

בעצם מה שעשינו הוא להגדיר ש-a שווה ל-a, לעצמו, פלוס 5. כך יוצא שהשווי הסופי שלו שווה 10.

כיוון שפעולה זו וכן פעולות דומות של חיסור, הכפלה וחילוק הם כל כך נפוצים הם ניתנים לחיבור ולכן נוכל לכתוב את קטע הקוד הקודם בצורה הבאה.

javascript
let a = 5;
a += 5;
console.log(a);

נראה קצת מבלבל במבט ראשון אבל האופרטור += שווה בדיוק ל-a + 5.

ניתן לבצע פעולת השמה הכוללת בתוכה פעולה מתמטית גם על חיסור, חילוק, הכפלה ושארית בצורה הבאה:

javascript
let a = 10;
a -= 5;  // a = a – 5;
console.log(a);

a *= 5;  // a = a * 5;
console.log(a);

a /= 5;  // a = a / 5;
console.log(a);


a %= 5;  // a = a % 5;
console.log(a);

אופרטורים אונריים

אופרטור אונרי הוא כזה העובד רק עם אופרנד אחד. לדוגמא אופרטור ההגדלה-עצמית ++ או אופרטור ההקטנה-עצמית -- עובדים עם אופרנד יחיד.

את האופרטורים האלו ניתן לכתוב לפני או אחרי המשתנה ויש לכך משמעות. במקרה והאופרטור נכתב לפני המשתנה הוא יתבצע קודם ורק אח"כ תתבצע ההצבה. אך במקרה והוא נכתב לאחר המשתנה קודם כל תתבצע ההצבה של ערך המשתנה ורק לאחר מכן הוא פעולת האופרטור תתבצע.

javascript
let number = 5;
let a      = ++number;

number = 5;
let c  = number++;

console.log(number);
console.log(a);
console.log(c);

נראה שהערך של המשתנה a הוא 6 כיוון שביצענו את אופרטור ההגדלה-עצמית לפני המשתנה. הערך של המשתנה b לעומת זאת שווה 5 כיוון שהאופרטור נכתב אחרי המשתנה.

אופרטור טרינארי

ישנו אופרטור אחד טרינארי – כזה העובד עם שלושה אופרנדים – וזהו האופרטור התנאי הטרינאר, אותו נכיר יחד עם שאר האופרטורים ההשוואתיים בפרק על תנאים.