这个语句的两个括号的位置为什么是在这里?

一个比较简单的程序(来源Cprimerplus P197 程序7.8)
/* paint.c -- 使用条件运算符 */
#include
#define COVERAGE 350//每罐油漆可刷的面积(单位:平方英尺)
int main()
{

int sq_feet;
int cans;
printf("Enter number of square feet to be painted:\n");
while(scanf("%d",&sq_feet)==1)
{
    cans=sq_feet/COVERAGE;
    cans+=((sq_feet%COVERAGE==0))?0:1;//这一行的括号
    printf("You need %d %s of paint.\n",cans,cans==1?"can":"cans");
    printf("Enter next value (q to quit):\n");
}
return 0;

}

问题:
在cans+=((sq_feet%COVERAGE==0))?0:1;这一行,
为什么这两个括号是在这里的,因为我自己写的是
cans+=((sq_feet%COVERAGE)==0)?0:1;
这两种写法对结果是没有影响的,但是括号位置不一样可能意味着逻辑思维不一样,我想问清楚这个问题,以免以后秉着错误的思维写更大的程序。

((sq_feet%COVERAGE==0)) 和 ((sq_feet%COVERAGE)==0) 两种写法其实也就是 (sq_feet%COVERAGE==0) 和 (sq_feet%COVERAGE)==0 的对比。
根据c++的运算符优先级,% 优先级本来就比 == 高,所以"(sq_feet%COVERAGE==0)" == "(sq_feet%COVERAGE)==0"。
至于逻辑思维,我的理解是(sq_feet%COVERAGE==0) 和 ((sq_feet%COVERAGE)==0) 都可以,第一种简洁一点;第二种更好理解一点,也是防止bug出现(自己规定运算顺序)。 至于为什么两个括号我也不太清除其含义了