Operador de fusión C #

¿Por qué el siguiente código devuelve falso?

public static void Main()
{
    bool? someCondition = true;
    bool someConditionOverride = false;


    bool? result = someCondition ?? someConditionOverride ? false : (bool?)null;

    Console.WriteLine(result);
}

Estaba exprectando el resultado serátrue, ya quesomeCondition no esnull y?? el operador regresarátrue. Sin embargo, parece que el operando derecho se calcula primero y la parte izquierda simplemente se ignora.

Agregar corchetes soluciona la confusión:

bool? result = someCondition ?? (someConditionOverride ? false : (bool?)null)

Y el resultado serátrue. Sin embargo, todavía tengo curiosidad por qué la parte izquierda había sido ignorada en el primer ejemplo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta