Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
The concept that is important to understand here is the concept of operator precedence. Assume you have an expression a + b * c. What does it mean? You could have the following options: (a + b) ...
Answer
#3: Post edited
- The concept that is important to understand here is the concept of operator precedence.
- Assume you have an expression `a + b * c`. What does it mean? You could have the following options: `(a + b) * c` or `a + (b * c)`. By adding the parentheses it can be made clear what shall be computed first, but what without the parentheses?
In mathematics as well as in all programming languages that I am aware of that allow such expressions (some languages don't use this kind of syntax at all) the meaning of `a + b * c` is by convention `a + (b * c)`. This is because the `*` is defined to have a higher precedence than `+`. If of two operators one has higher precedence this means, that that one "wins" over the other when it comes to computation order. Since `*` has a higher precedence than the `+`, you first have to compute the `*` and afterwards the `+`.- Looking at the expression from the question: `(x == 42) * -1 + (x != 42) * x` thus means the same as `((x == 42) * -1) + ((x != 42) * x)`. Thus, when `x` has the value 42, this results in `(1 * -1) + (0 * x)` that is -1 + 0 which gives -1.
- The concept that is important to understand here is the concept of operator precedence.
- Assume you have an expression `a + b * c`. What does it mean? You could have the following options: `(a + b) * c` or `a + (b * c)`. By adding the parentheses it can be made clear what shall be computed first, but what without the parentheses?
- In mathematics as well as in all programming languages that I am aware of that allow such expressions (some languages don't use this kind of syntax at all) the meaning of `a + b * c` is `a + (b * c)`. This is because the `*` is commonly defined to have a higher precedence than `+`. If of two operators one has higher precedence this means, that that one "wins" over the other when it comes to computation order. Since `*` has a higher precedence than the `+`, you first have to compute the `*` and afterwards the `+`.
- Looking at the expression from the question: `(x == 42) * -1 + (x != 42) * x` thus means the same as `((x == 42) * -1) + ((x != 42) * x)`. Thus, when `x` has the value 42, this results in `(1 * -1) + (0 * x)` that is -1 + 0 which gives -1.
#2: Post edited
- The concept that is important to understand here is the concept of operator precedence.
- Assume you have an expression `a + b * c`. What does it mean? You could have the following options: `(a + b) * c` or `a + (b * c)`. By adding the parentheses it can be made clear what shall be computed first, but what without the parentheses?
In mathematics as well as in all programming languages that I am aware of that allow such expressions (some languages don't use this kind of syntax at all) the meaning of `a + b * c` is `a + (b * c)`. This is because the `*` has a higher precedence than `+`. If of two operators one has higher precedence this means, that that one "wins" over the other when it comes to computation order. Since `*` has a higher precedence than the `+`, you first have to compute the `*` and afterwards the `+`.- Looking at the expression from the question: `(x == 42) * -1 + (x != 42) * x` thus means the same as `((x == 42) * -1) + ((x != 42) * x)`. Thus, when `x` has the value 42, this results in `(1 * -1) + (0 * x)` that is -1 + 0 which gives -1.
- The concept that is important to understand here is the concept of operator precedence.
- Assume you have an expression `a + b * c`. What does it mean? You could have the following options: `(a + b) * c` or `a + (b * c)`. By adding the parentheses it can be made clear what shall be computed first, but what without the parentheses?
- In mathematics as well as in all programming languages that I am aware of that allow such expressions (some languages don't use this kind of syntax at all) the meaning of `a + b * c` is by convention `a + (b * c)`. This is because the `*` is defined to have a higher precedence than `+`. If of two operators one has higher precedence this means, that that one "wins" over the other when it comes to computation order. Since `*` has a higher precedence than the `+`, you first have to compute the `*` and afterwards the `+`.
- Looking at the expression from the question: `(x == 42) * -1 + (x != 42) * x` thus means the same as `((x == 42) * -1) + ((x != 42) * x)`. Thus, when `x` has the value 42, this results in `(1 * -1) + (0 * x)` that is -1 + 0 which gives -1.
#1: Initial revision
The concept that is important to understand here is the concept of operator precedence. Assume you have an expression `a + b * c`. What does it mean? You could have the following options: `(a + b) * c` or `a + (b * c)`. By adding the parentheses it can be made clear what shall be computed first, but what without the parentheses? In mathematics as well as in all programming languages that I am aware of that allow such expressions (some languages don't use this kind of syntax at all) the meaning of `a + b * c` is `a + (b * c)`. This is because the `*` has a higher precedence than `+`. If of two operators one has higher precedence this means, that that one "wins" over the other when it comes to computation order. Since `*` has a higher precedence than the `+`, you first have to compute the `*` and afterwards the `+`. Looking at the expression from the question: `(x == 42) * -1 + (x != 42) * x` thus means the same as `((x == 42) * -1) + ((x != 42) * x)`. Thus, when `x` has the value 42, this results in `(1 * -1) + (0 * x)` that is -1 + 0 which gives -1.