What do these operators do? Going through the "timeouts" example of the elapsedMillis library (https://github.com/pfeerick/elapsedMillis) I found the following statement:

digitalWrite(LEDPIN, flashPattern[ledIndex++] ? ledBrightness : !ledBrightness);


flashpattern is an array of boolean variables  (boolean flashPattern[] = { 1,1,1,1,1,1,1,0,1,1,0 };)
ledBrightness is a boolean as well. 


What does the "?" and the ":" do there? are these boolean operators?
They are the conditional operator. If the expression before the ? is true then the result is the expression before the :, otherwise it is the expression after.