# 如果n是2019的倍数并且不在区间（（a，b））中，则找到一个逻辑表达式为真。

I had the task of finding a logical expression that would result in `1` if and only if a given number `n` is a multiple of `2019` and is NOT from the interval `(a, b)`.

``````a>=n || b<=n && (n%3==0 && n%673==0)
``````

The thing between those parantheses I understand to be equivalent to `n%2019==0`, so that's alright. But I don't understand why this works, I mean the `&&` operator has higher priority that the `||` operator, so wouldn't we evaluate

`b<=n && (n%3==0 && n%673==0)`

first and only at the end if `n<=a`? I thought that if I were to do it, I would do it like this:

`(a>=n || b<=n) && (n%3==0 && n%673==0)`

So I just added that extra set of parantheses. Now we would check if the number is not in the interval `(a, b)`, then we would check if it is a multiple of `2019` and then we would 'and' those to answers to get the final answer. This makes sense to me. But I don't understand why they omitted that set of parantheses, why would that still work? Shouldn't we consider that `&&` has higher priority than `||`, so we add an extra set of parantheses? Would it still work? Or is it me that is wrong?