Operador de coalescência c #

Por que o código a seguir retorna false?

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


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

    Console.WriteLine(result);
}

Eu estava expressando o resultado serátrue, Desde asomeCondition não énull e?? operador retornarátrue. No entanto, parece que o operando direito é calculado primeiro e a parte esquerda é simplesmente ignorada.

A adição de colchetes corrige a confusão:

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

E o resultado serátrue. No entanto, ainda estou curioso por que a parte esquerda foi ignorada no primeiro exemplo.

questionAnswers(1)

yourAnswerToTheQuestion