Nope… It will yield every frame.
Get that stuff outside the Update loop. Usually make a boolean switch which when true calls a function. Put the yield in the function and set it back to false when the yield is completed. With C# it is a bit more complicated than UnityScript and you have to use an IEnumerator instead of a void to set up the yield… But really yield is the best method for timing without continually looping…