The other answers explained the comma pretty well I guess, and Nikola's answer also shows you how the logical and operator && is used as an alternative of an if statement, due to its short-circuiting evaluation.
As for the brackets - they just alter operator precedence, because the comma operator has a very low precedence naturally.
a && b, c would be interpreted as (a && b), c, i.e. if(a)b;c
a && (b, c) is if(a){b;c}