Simplify the code

☺lookMaNoLetters☺ = 1 ## & @@@ # & /@ # &;

☺lookMaNoLetters☺ @ mylist

{{y1 y2 y3, y3 y4 y5}, {w1 w2 w3, w4 w5 w6}}

Further variations:

☺lookMaNoLettersOrNumbers☺ = # ##2 & @@@ # & /@ # &;
☺ApplyTimesAtLevel2☺ = # ##2 & @@ ## &[#, {2}] &;
☺InCaseYouLikeInfix☺ = # ~ (# ##2 & @@ ## &) ~ {2} &;
☺IfYouLikeVerbose☺ = Map[Map @ Apply @ Times]

You can use as many @s as you like:

☺♬♪♫♪☺ = ## & @@@ (## & @@@ ## & @@@ 1 ## & @@@ {##} & @@@ {##} & /@ #) &;

☺♬♪♫♪☺ @ mylist

{{y1 y2 y3, y3 y4 y5}, {w1 w2 w3, w4 w5 w6}}


Since you appear to want to multiply the list only when all of its elements are atomic, how about just

mylist /. {s__?AtomQ} :> Times[s]

It appears to be the most direct translation of your thought.


Times @@@ # & /@ mylist
(*    {{y1 y2 y3, y3 y4 y5}, {w1 w2 w3, w4 w5 w6}}    *)