a nivel técnico, los paréntesis exteriores son para modificar el orden de la operación puesto que los
operadores tienen un orden de precedencia. o sea, es como en la álgebra, para resolver un problema hay que seguir un orden específico: comienzas por paréntesis más internos, luego exponentes, multiplicación o división, y suma o resta. en la programación es el mismo principio. como dijo @cronos, los paréntesis internos estan presentes para mayor legibilidad.
¿qué sucede cuando se omite los paréntesis externos? primero tienes que comprender el tema de las precedencias. utilizando el mismo problema pero más simplificado.
Código:
// omitiendo parentesis ;
var string = "some string ";
string + variable == null ? "empty": "date string";
en la segunda línea hay tres operadores: + (concatenación), == (igualdad) y ?: (ternario). en el orden mencionado, el operador de la izquierda tiene mayor prioridad que el de la derecha. de modo que la evaluación vendría siendo algo similar a lo siguiente.
Código:
// el color rojo indica la operacion a realizar y en negrita el resultado ;
// problema original ;
// concatenar string con la variable ;
string + variable == null ? "empty": "date string";
// comparar la igualdad de la cadena concatenada con null ;
string_variable == null ? "empty": "date string";
// resolver el ternario de acuerdo al boolean ;
// genera false porque un sting jamas es igual a null,
// sea un string vacio o lleno ;
false? "empty": "date string";
// false siempre devuelve la segunda expresion del ternario ;
"date string"
con los parentesis, el orden de la operacion cambia y por tanto el resultado. te lo dejo para que lo analices.