# binary2d > Apply a binary callback to elements in two two-dimensional nested input arrays and assign results to elements in a two-dimensional nested output array.
## Usage ```javascript var binary2d = require( '@stdlib/array/base/binary2d' ); ``` #### binary2d( arrays, shape, fcn ) Applies a binary callback to elements in two two-dimensional nested input arrays and assigns results to elements in a two-dimensional nested output array. ```javascript var add = require( '@stdlib/number/float64/base/add' ); var zeros2d = require( '@stdlib/array/base/zeros2d' ); var x = [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ]; var z = zeros2d( [ 2, 2 ] ); var shape = [ 2, 2 ]; binary2d( [ x, x, z ], shape, add ); // z => [ [ 2.0, 4.0 ], [ 6.0, 8.0 ] ] ``` The function accepts the following arguments: - **arrays**: array-like object containing two input nested arrays and one output nested array. - **shape**: array shape. - **fcn**: binary function to apply.
## Notes - The function assumes that the input and output arrays have the same shape.
## Examples ```javascript var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var filled2dBy = require( '@stdlib/array/base/filled2d-by' ); var zeros2d = require( '@stdlib/array/base/zeros2d' ); var add = require( '@stdlib/number/float64/base/add' ); var binary2d = require( '@stdlib/array/base/binary2d' ); var shape = [ 3, 3 ]; var x = filled2dBy( shape, discreteUniform( -100, 100 ) ); console.log( x ); var y = filled2dBy( shape, discreteUniform( -100, 100 ) ); console.log( y ); var z = zeros2d( shape ); console.log( z ); binary2d( [ x, y, z ], shape, add ); console.log( z ); ```