
! על ביטוי השוואה בלי סוגריים לא עובד, כי NOT מופעל על הערך הראשון ולא על כל הביטוי.<, >, <=, >=, == ו-!= מחושבים אחרי NOT.הטקסט המלא של הדקות הראשונות בהרצאה «Operators Precedence» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו יודעים שבשימוש באופרטורים קיים מה שנקרא קדימות אופרטורים. לדוגמה ראינו שכפל וחילוק וגם מודלו, יש לו את אותה רמה, קודמים לחיבור וחיסור.
גם באופרטורים לוגיים קיימת קדימות. אז בואו נראה בדיוק מה הקדימות באופרטורים הלוגיים ובכלל באופרטורים שקשורים לתנאים כולל אופרטורי השוואה.
אז האופרטור החזק ביותר בכל הסיפור הזה זה not, הוא האופרטור שהמחשב מעריך ראשון. זאת אומרת שאם אנחנו עושים משהו כזה, בוא נניח לדוגמה אנחנו עושים int if a not a גדול מ-b.
נניח ש-a ו-b ושני משתנים אינטג'ריים שיש לנו אותם כאן, a ו-b. אז מה המחשב קודם כל יבצע? האם הוא יבצע את האם A גדול מ-B או האם NOT A. אז מה שהקומפיילר מנסה לבצע קודם כל זה את NOT A וזאת בעצם הסיבה שהוא נותן לנו כאן שגיאה מפני ש-A הוא לא בולעני אז אי אפשר לבצע פה NOT.
אבל אנחנו רואים שה-NOT הוא חזק יותר מהגדול ומכל אופרטור השוואה שהוא. אם אנחנו באמת רוצים לבצע NOT על איזשהו מצב של אופרטור השוואתי, אנחנו צריכים לעטוף אותו בסוגריים כדי שהמחשב ידע קודם כל לבצע את הסוגריים.
אז אופרטור not זה האופרטור החזק ביותר. בואו רגע ניפטר מזה ונעבור למצב של end ו-or. אז אם יש לנו פה איזשהו תנאי or תנאי end תנאי, מה בעצם המחשב מבצע קודם כל?
האם הוא עושה את זה לפי הסדר משמאל לימין ואז הוא מחזיר בעצם את התוצאה וממשיך לעשות אותה ביחד עם האופרטור הבא בתור.
אז התשובה היא לא, המחשב מבצע את זה לפי קדימות אופרטורים. ואחרי שראינו שהנוט הוא הכי חזק, המחשב כמובן יבצע את האופרטורים שיש פה, את האופרטורי השוואה, אבל אחרי שיחליט מה יש כאן הוא יבצע קודם כל את ה-end.
ה-end יותר חזק מה-or. זאת אומרת שמה שהמחשב יבצע זה את הבדיקה הזאת. האם התנאי הזה שמשמאל ל-end וגם התנאי הזה, מה הם בדיוק מחזירים לי?
יוחזר כאן או true או false. לאחר מכן המחשב יבצע את זה ביחד עם ה-or. זאת אומרת, אם יש לנו מצב של or וor וor וor כל הזמן אחד ביחד עם השני, כמובן שהמחשב יכול לעשות את הכל משמאל לימין, לבצע את שני אלה, להחזיר תוצאה ואז לבצע את התוצאה ביחד עם זה, להחזיר תוצאה ואז לבצע אותו ביחד עם זה וכן
הלאה. אבל במידה ויש לנו פה ערבוביה של END ו-OR, המחשב קודם כל יבצע את ה-END ורק אחר כך מה שמוחזר יתבצע עם ה-OR. זאת אומרת שאם אנחנו באמת מבצעים פה קדימות אופרטורים מהחזק יותר לחלש יותר, אנחנו מקבלים דבר ראשון את ה-NOT, זה האופרטור החזק ביותר.
לאחר מכן אנחנו מקבלים את אופרטורי ההשוואה, Comparison Operators. לאחר מכן אנחנו מקבלים את ה-AND, לאחר מכן אנחנו מקבלים את ה-OR, שהוא הכי חלש בקבוצה הזאת.
אם אנחנו משווים את כל האופרטורים ששייכים לתנאים בעצם. זאת אומרת שאם יש לי פה איזה משהו כזה a גדול מ-b, c שווה 19 ו-d קטן מ-8 אז ברור שקודם כל האופרטורים, קודם כל הסוגריים יתבצעו אבל אם אין לי סוגריים מה בעצם המחשב יבצע
כאשר יש לי פה את כל סוגי האופרטורים האלה. אז למעשה מה שהוא מבצע זה אמרנו קודם כל את ה-NOT, הוא ינסה לבצע את ה-NOT, במקרה הזה A יהיה חייב להיות בולעני ואז נניח פה הוא כבר אי אפשר גדול מ-A, אפשר רק שווה ל-B שגם הוא בולעני ואז מה שהמחשב ינסה לבצע וזה דבר ראשון, לאחר מכן הוא יבצע את אופרטורי ההשוואה 1,
2, 3, לאחר מכן הוא יבצע את ה-ENDים ואז הוא ישלים אותם עם ה-ORים. זה בעצם הקצב או בעצם הקדימות שבו הוא עובד. אבל אנחנו כמובן יכולים לשנות את זה על ידי