Круглые скобки работают внутри [[ ]],
но не работают внутри [ ].
Обратите внимание, что между двумя брекетами [[ не должно быть пробела, это единый оператор проверки, а не один [ внутри другого [.
if [[ ( "$projectDir" = "video" || "$projectDir" = "audio" ) && "$flag" != "noflag" ]]
Но попробуем убить двух зайцев: оставить конструкцию возможно ближе к вашей исходной и при этом обойтись [ и не использовать [[. Выходит костыльно, что ж.
if [ "$([ "$projectDir" = "video" -o "$projectDir" = "audio" ]&& echo 1)" -a "$flag" != "noflag" ]