This only deals with the finite case.
You're familiar with the direct product, right?
So, for example if we have a group [itex]H[/itex], then elements of
[itex]H \times H[/itex] are ordered pairs [itex](h_1,h_2)[/itex] and the product is defined in the obvious way:
[tex](h_1,h_2) \times (g_1,g_2)=(h_1 g_1, h_2 g_2)[/tex]
And this readily generalizes to any finite power of [tex]H[/tex].
Now, let's say we have some finite group [itex]G[/itex] with [itex]n=|G|[/itex]. Then, we know that [itex]G < S_n[/itex] from Caley's theorem - that is, we can consider the elements of [itex]G[/itex] to be permutations of [itex]n[/itex] elements.
Now, consider [itex]H^n[/itex] (which is the direct product of [itex]n[/itex] copies of [itex]H[/itex]). Each element of this group is an ordered [itex]n[/itex]-tuple of elements of [itex]H[/itex].
If we consider the elements of [itex]G[/itex] as permutations, we can allow them to act on the elements of [itex]H^n[/itex] by permuting them:
If
[tex]\vec{h}=\left( h_1,h_2...h_n \right)[/tex]
then
[tex]g \cdot \vec{h} = \left(h_{g(1)},h_{g(2)}...h_{g(n)}\right)[/tex]
So, if we consider the elements of the cartesian product [itex]G \times H^n[/itex], we can define a group operation on them:
[tex](g_1,\vec{h}_1) * (g_2,\vec{h}_2) = (g_1 g_2, g_1 \cdot (\vec{h}_1 \vec{h}_2))[/tex]